package slidingwindow;

import java.beans.Customizer;

/**
 * @author kaho
 * @since 2021/2/23
 */
public class _1052_爱生气的书店老板 {

    /**
     * 今天，书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客（customers[i]）会进入书店，所有这些顾客都会在那一分钟结束后离开。
     *
     * 在某些时候，书店老板会生气。 如果书店老板在第 i 分钟生气，那么 grumpy[i] = 1，否则 grumpy[i] = 0。 当书店老板生气时，那一分钟的顾客就会不满意，不生气则他们是满意的。
     *
     * 书店老板知道一个秘密技巧，能抑制自己的情绪，可以让自己连续 X 分钟不生气，但却只能使用一次。
     *
     * 请你返回这一天营业下来，最多有多少客户能够感到满意的数量。
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode-cn.com/problems/grumpy-bookstore-owner
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     * @param customers
     * @param grumpy
     * @param X
     * @return
     *
     * dp[i][j] j分钟不生气 前i位顾客的最大满意度
     *
     * dp[0][j] = 0, dp[i][0] =
     *
     */
    public int maxSatisfied(int[] customers, int[] grumpy, int X) {
        int satisfied = 0;
        for (int i = 0; i < customers.length; i++) {
            satisfied = satisfied + (grumpy[i] == 0 ?customers[i]:0);
        }
        int start = 0;
        int end = X-1;
        if (end<0){
            return satisfied;
        }
        int xMax = 0;
        while (end < customers.length) {
            int curMax = 0;
            for (int i = start; i <= end; i++) {
                curMax += (grumpy[i] == 1? customers[i]:0);
            }
            xMax = Math.max(xMax, curMax);
            start++;
            end++;
        }
        return xMax+satisfied;
    }
}
